The invention relates to memory management in a computer system.
A computer system includes a main memory (typically implemented with dynamic random access memories or DRAMs) used to store code and data information. Generally, a computer system includes several layers of buses, including a host bus, a Peripheral Component Interconnect (PCI) bus, and an expansion bus such as the Industry Standard Architecture (ISA) or Extended Industry Standard Architecture (EISA) bus. The main memory is used as a common resource accessible to system devices on the buses. Typically, the main memory is located on the host bus along with the central processing unit (CPU) for optimal performance of the computer system because the CPU requires fast access to the main memory.
Certain other system devices may also require relatively fast access to a memory device. One such system device is the video card, which typically includes a video memory (or frame buffer) for storing video data. Local storage of the video data allows a video controller in the video card to refresh or update a video display within the required amount of time to avoid flickering problems.
To avoid the need for a dedicated frame buffer on the video card, the VESA (Video Electronics Standards Association) Unified Memory Architecture (VUMA) was developed, which is described in "VESA Unified Memory Architecture (VUMA) Standard Hardware Specifications," Version 1.0 (Mar. 8, 1996), and which is hereby incorporated by reference. VUMA is a computer system memory architecture in which the main memory is "physically" shared between the system (including the CPU and other devices) and a peripheral device (a "VUMA device"). Typically, a system device other than the CPU accesses the main memory through a direct memory access (DMA) controller over the ISA or EISA expansion bus, and a PCI bus device accesses the main memory in a memory transaction over the PCI bus. A VUMA device, on the other hand, is directly coupled to the main memory bus, as is the CPU, which improves memory access times for the VUMA device. One such VUMA device is a video card.
Referring to FIG. 1, a VUMA device 18 is connected to a Peripheral Component Interconnect (PCI) bus 12 in a computer system. The VUMA device 18 is also connected to a main memory 16 (having a storage capacity of, for example, 8 megabytes) over a memory bus 20, which is further connected to a core logic circuit 14 (including a bridge to the PCI bus 12 and a memory controller). The core logic circuit 14 acts as the interface between a CPU 10 and the PCI bus 12 and the main memory 16. Other devices (not shown) are also connected to the PCI bus 12.
The main memory 16 is shared between the system (including the CPU 10 and other PCI bus devices) and the VUMA device 18, which can directly access the main memory 16 over the memory bus 20. A portion 22 of the main memory 16 is allocated as the memory for the VUMA device 18 ("the VUMA memory"), and the remainder of the main memory 16 is allocated to the rest of the computer system.
The VUMA memory 22 is mapped to the top of the main memory 16 as a single, contiguous region. Thus, for example, if the VUMA device 18 requires 2 megabytes (MB) of memory space, a 2-MB contiguous region of the main memory 16 is mapped to the VUMA memory 22, leaving the remaining 6-MB region for system use.